# import libraries
library(readxl)
library(tidyverse)
library(patchwork)
# global options
knitr::opts_chunk$set(fig.width=10, fig.height=8, fig.align = "center")
# import data
opinary <- read_excel("../data/Publisher political orientation polls.xlsx", sheet = "Data") %>%
mutate(label = ifelse(vote_position=="left",leftlabel,rightlabel),
label = ifelse(vote_position=="middle","",label),
label_order = ifelse(vote_position=="left",1,2),
label_order = ifelse(vote_position=="right",3,label_order)
) %>%
select(-leftlabel, -rightlabel) %>%
group_by(poll_id) %>%
# get number of total votes/poll
mutate(vote_sum = sum(votes)) %>%
ungroup() %>%
# keep polls with > 1000 votes
filter(vote_sum > 1000) %>%
mutate(vote_share = votes/vote_sum)
Number of total votes
p <- opinary %>%
group_by(poll_customer_id) %>%
summarise(vote_sum = sum(votes)) %>%
ggplot(aes(reorder(poll_customer_id, vote_sum), vote_sum, text = vote_sum)) +
geom_col(fill="darkred", alpha=0.7) +
coord_flip() +
ggthemes::theme_hc() +
labs(x=NULL, y="Total votes") +
ylim(0, 3800000)
plotly::ggplotly(p, tooltip = c("text"))
Topics
check_polls <- function(df, topics) {
df %>%
# Add filter
filter(grepl(topics, header, ignore.case = T)) %>%
group_by(header, label) %>%
tally() %>%
htmlTable::htmlTable(align="l", rnames=F)
}
plot_polls <- function(df, topics, pos_labels, neg_labels) {
topic_df <- df %>%
# Add filter
filter(grepl(topics, header, ignore.case = T)) %>%
group_by(poll_customer_id, header, label) %>%
summarise(
votes = sum(votes),
vote_share = mean(vote_share)
) %>%
ungroup() %>%
group_by(poll_customer_id) %>%
mutate(vote_sum = sum(votes)) %>%
ungroup() %>%
# create labels
mutate(
short_label = ifelse(grepl(pos_labels, label, ignore.case = T),"+",""),
short_label = ifelse(grepl(neg_labels, label, ignore.case = T),"-",short_label),
long_label = paste(label,"(",votes,")")
) %>%
group_by(poll_customer_id, header, short_label) %>%
summarise(
vote_share = mean(vote_share),
vote_mean = sum(votes),
labels = paste(long_label, collapse = "\n")
) %>% ungroup() %>%
mutate(
label_order = ifelse(short_label =="+",0,1),
label_order = ifelse(short_label =="" ,1,label_order),
label_order = ifelse(short_label =="-",2,label_order)
)
p <- topic_df %>%
ggplot(aes(reorder(short_label,label_order),
poll_customer_id, fill=vote_share, text = labels
)) +
geom_tile() +
geom_text(aes(label= round(vote_share,2)), size=3) +
ggthemes::theme_hc() +
facet_wrap(.~header, ncol = 2, scales = "free") +
scale_fill_gradient2(low = "#6993c9", mid="#fcf8f7", high="#8b312e") +
labs(x=NULL, y=NULL) +
theme(axis.text.x = element_text(size = 6),
legend.position='none')
plotly::ggplotly(p, tooltip = c("text"))
}
1. National
AfD
key = "afd"
check_polls(opinary, key)
|
header
|
label
|
n
|
|
Glauben Sie, dass die AfD eine Gefahr für die Demokratie ist?
|
|
4
|
|
Glauben Sie, dass die AfD eine Gefahr für die Demokratie ist?
|
Ja, die Partei wird gefährlich
|
4
|
|
Glauben Sie, dass die AfD eine Gefahr für die Demokratie ist?
|
Nein, die AfD ist ungefährlich
|
4
|
|
Ist Ihnen die AfD zu radikal?
|
|
5
|
|
Ist Ihnen die AfD zu radikal?
|
Ja, ihre Thesen sind mir zu extrem
|
5
|
|
Ist Ihnen die AfD zu radikal?
|
Nein, die AfD vertritt eine angemessene Politik
|
5
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
|
13
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, auf jeden Fall
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, das ist notwendig
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, die AfD ist Teil der rechtsextremen Szene
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, die AfD ist Teil der rechtsextremen Szene.
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, die Aussagen von Höcke und Co. sind nicht tragbar
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, die Partei vertritt verfassungsfeindliche Positionen
|
3
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Ja, es gibt verfassungsfeindliche Tendenzen in der Partei.
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, auf keinen Fall
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, das wäre übertrieben
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, die Aufregung ist völlig überzogen
|
1
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, eine Beobachtung durch den Geheimdienst ist nicht gerechtfertigt
|
3
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, eine solche Beobachtung ist nicht gerechtfertigt
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, eine solche Beobachtung ist nicht gerechtfertigt.
|
2
|
|
Sollte die AfD vom Verfassungsschutz beobachtet werden?
|
Nein, sie ist eine demokratische Partei.
|
1
|
|
Wie bewerten Sie die Arbeit der AfD-Parlamentarier?
|
|
10
|
|
Wie bewerten Sie die Arbeit der AfD-Parlamentarier?
|
Gut, sie bereichern die politische Debatte
|
10
|
|
Wie bewerten Sie die Arbeit der AfD-Parlamentarier?
|
Schlecht, sie leisten keinen konstruktiven Beitrag
|
10
|
|
Wird die AfD die Bundespolitik nachhaltig verändern?
|
|
13
|
|
Wird die AfD die Bundespolitik nachhaltig verändern?
|
Ja, die Partei wird einen sehr starken Einfluss auf die Politik haben
|
13
|
|
Wird die AfD die Bundespolitik nachhaltig verändern?
|
Nein, die Partei wird im parlamentarischen Prozess untergehen
|
13
|
pos <- paste("Ja","Gut", sep="|")
neg <- paste("Nein", "Schlecht", sep="|")
plot_polls(opinary, key, pos, neg)
Islam, Rechtsextremismus, Antisemitismus
keys = paste("islam","rechtsextrem", "antisemitismus", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Bedroht der Rechtsextremismus unsere Demokratie?
|
|
3
|
|
Bedroht der Rechtsextremismus unsere Demokratie?
|
Ja, rechtsextremistische Parolen schränken unsere Freiheit ein
|
1
|
|
Bedroht der Rechtsextremismus unsere Demokratie?
|
Ja, rechtsextremistische Parolen schränken unsere Freiheit ein.
|
2
|
|
Bedroht der Rechtsextremismus unsere Demokratie?
|
Nein, unsere Demokratie hält das aus
|
1
|
|
Bedroht der Rechtsextremismus unsere Demokratie?
|
Nein, unsere Demokratie hält das aus.
|
2
|
|
Braucht es mehr Aufklärung, um Antisemitismus vorzubeugen?
|
|
8
|
|
Braucht es mehr Aufklärung, um Antisemitismus vorzubeugen?
|
Ja klar, das würde definitiv helfen.
|
1
|
|
Braucht es mehr Aufklärung, um Antisemitismus vorzubeugen?
|
Ja, das würde helfen
|
7
|
|
Braucht es mehr Aufklärung, um Antisemitismus vorzubeugen?
|
Nein, das allein hilft nicht.
|
1
|
|
Braucht es mehr Aufklärung, um Antisemitismus vorzubeugen?
|
Nein, das hilft nicht
|
7
|
|
Gehört der Islam zu Deutschland?
|
|
12
|
|
Gehört der Islam zu Deutschland?
|
Ja
|
1
|
|
Gehört der Islam zu Deutschland?
|
Ja, er gehört dazu – genauso wie das Christentum auch
|
6
|
|
Gehört der Islam zu Deutschland?
|
Ja, er gehört dazu – wie das Christentum auch
|
5
|
|
Gehört der Islam zu Deutschland?
|
Nein
|
1
|
|
Gehört der Islam zu Deutschland?
|
Nein, der Islam gehört nicht zu Deutschland
|
11
|
|
Glauben Sie, dass Antisemitismus in Deutschland ein Problem ist?
|
|
6
|
|
Glauben Sie, dass Antisemitismus in Deutschland ein Problem ist?
|
Ja, den Eindruck habe ich
|
1
|
|
Glauben Sie, dass Antisemitismus in Deutschland ein Problem ist?
|
Ja, Judenhass ist weit verbeitet
|
5
|
|
Glauben Sie, dass Antisemitismus in Deutschland ein Problem ist?
|
Nein, damit gibt es hier eigentlich kaum Probleme
|
5
|
|
Glauben Sie, dass Antisemitismus in Deutschland ein Problem ist?
|
Nein, ich glaube nicht, dass es so ist
|
1
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)
CDU, Koalition
keys = paste("merkel","koalition", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Sollte es wieder eine große Koalition geben?
|
|
8
|
|
Sollte es wieder eine große Koalition geben?
|
Ja, das ist das einzige stabile politische Bündnis
|
8
|
|
Sollte es wieder eine große Koalition geben?
|
Nein, das wäre nicht die richtige Regierungskoalition
|
8
|
|
Wäre Friedrich Merz ein guter Merkel-Nachfolger?
|
|
16
|
|
Wäre Friedrich Merz ein guter Merkel-Nachfolger?
|
Ja, er wäre eine gute Wahl
|
16
|
|
Wäre Friedrich Merz ein guter Merkel-Nachfolger?
|
Nein, er wäre eine schlechte Wahl
|
16
|
|
Wird die große Koalition an der Migrationspolitik zerbrechen?
|
|
7
|
|
Wird die große Koalition an der Migrationspolitik zerbrechen?
|
Ja, die Parteien sind zu gespalten
|
7
|
|
Wird die große Koalition an der Migrationspolitik zerbrechen?
|
Nein, so weit wird es nicht kommen
|
7
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)
Cannabis, Alkohol
keys = paste("cannabis","alkohol", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
|
17
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
Ja, eine Legalisierung ist längst überfällig
|
17
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
Nein, Cannabis ist als Einstiegsdroge zu gefährlich
|
17
|
|
Wird in Deutschland zu viel Alkohol getrunken?
|
|
11
|
|
Wird in Deutschland zu viel Alkohol getrunken?
|
Ja, es wird zu oft und zu viel getrunken?
|
11
|
|
Wird in Deutschland zu viel Alkohol getrunken?
|
Nein, die meisten trinken verantwortungsvoll
|
11
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)
Diesel-Fahrverbote, E-Mobilität, Klimawandel, …
keys <- paste("diesel","e-mobilität", "klimawandel", "cannabis", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Brauchen wir mehr Investitionen in die E-Mobilität?
|
|
4
|
|
Brauchen wir mehr Investitionen in die E-Mobilität?
|
Ja, das ist der Weg in die Zukunft
|
4
|
|
Brauchen wir mehr Investitionen in die E-Mobilität?
|
Nein, der Markt regelt das von allein
|
4
|
|
Glauben Sie, dass die Menschheit den Klimawandel noch aufhalten kann?
|
|
4
|
|
Glauben Sie, dass die Menschheit den Klimawandel noch aufhalten kann?
|
Ja, wir müssen aber anfangen, Probleme ernsthaft zu bekämpfen
|
4
|
|
Glauben Sie, dass die Menschheit den Klimawandel noch aufhalten kann?
|
Nein, dafür ist es bereits zu spät
|
4
|
|
Sind Diesel-Fahrverbote sinnvoll?
|
|
10
|
|
Sind Diesel-Fahrverbote sinnvoll?
|
Ja, die Luftverschmutzung ist sonst nicht in den Griff zu kriegen
|
10
|
|
Sind Diesel-Fahrverbote sinnvoll?
|
Nein, das ist der Falsche Weg zur Lösung der Luftbelastung
|
10
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
|
17
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
Ja, eine Legalisierung ist längst überfällig
|
17
|
|
Sollte Cannabis grundsätzlich legalisiert werden?
|
Nein, Cannabis ist als Einstiegsdroge zu gefährlich
|
17
|
|
Was halten Sie von Diesel-Fahrverboten?
|
|
10
|
|
Was halten Sie von Diesel-Fahrverboten?
|
Gut, dass etwas getan wird.
|
1
|
|
Was halten Sie von Diesel-Fahrverboten?
|
Ich bin dagegen – weil sie reine Show sind.
|
1
|
|
Was halten Sie von Diesel-Fahrverboten?
|
Ich bin dagegen. Diesel-Fahrer haben das Nachsehen
|
9
|
|
Was halten Sie von Diesel-Fahrverboten?
|
Ich finde das gut. Das wird die Luftqualität verbessern
|
2
|
|
Was halten Sie von Diesel-Fahrverboten?
|
Ich finde das gut. Das wird wird die Luftqualität verbessern
|
7
|
pos <- paste("Ja","Gut", sep="|")
neg <- paste("Nein", "Dagegen", sep="|")
plot_polls(opinary, keys, pos, neg)
Gehalt, Warnstreiks
keys = paste("gehalt", "warnstreiks", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Haben Sie Verständnis für die Warnstreiks bei der Deutschen Bahn?
|
|
11
|
|
Haben Sie Verständnis für die Warnstreiks bei der Deutschen Bahn?
|
Ja, die Streiks sind berechtigt.
|
11
|
|
Haben Sie Verständnis für die Warnstreiks bei der Deutschen Bahn?
|
Nein, das geht eindeutig zu weit.
|
11
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
|
7
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Ja, absolut. Ich habe mehr als genug.
|
1
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Ja, ich verdiene genug
|
4
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Ja, mein Gehalt ist angemessen
|
1
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Ja, total. Ich kann mich nicht beklagen.
|
1
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Nein, ich fühle mich komplett unterbezahlt.
|
1
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Nein, ich verdiene zu wenig
|
4
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Nein, mein Gehalt könnte höher sein
|
1
|
|
Sind Sie mit Ihrem Gehalt zufrieden?
|
Nein, überhaupt nicht. Ich bin komplett unterbezahlt.
|
1
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)
2. International
Trump
key <- "trump"
check_polls(opinary, key)
|
header
|
label
|
n
|
|
Glauben Sie, dass Trump seine Amtszeit vollenden wird?
|
|
6
|
|
Glauben Sie, dass Trump seine Amtszeit vollenden wird?
|
Ja, er wird die vier Jahre im Amt bleiben
|
6
|
|
Glauben Sie, dass Trump seine Amtszeit vollenden wird?
|
Nein, es wird jetzt schon eng für ihn
|
6
|
|
Ist Donald Trump eine Bedrohung für die Demokratie?
|
|
9
|
|
Ist Donald Trump eine Bedrohung für die Demokratie?
|
Ja, er könnte zu einer großen Gefahr werden
|
9
|
|
Ist Donald Trump eine Bedrohung für die Demokratie?
|
Nein, die Verfassung wird ihn in die Schranken weisen
|
9
|
|
Kann Trump die Wiederwahl 2020 gewinnen?
|
|
4
|
|
Kann Trump die Wiederwahl 2020 gewinnen?
|
Ja, seine Chancen stehen gut
|
4
|
|
Kann Trump die Wiederwahl 2020 gewinnen?
|
Nein, er hat keine Chance
|
4
|
|
Sind die USA unter Trump noch ein verlässlicher Partner?
|
|
12
|
|
Sind die USA unter Trump noch ein verlässlicher Partner?
|
Ja, die USA bleiben ein wichtiger Verbündeter
|
12
|
|
Sind die USA unter Trump noch ein verlässlicher Partner?
|
Nein, mit Trumps USA ist keine stabile Partnerschaft möglich
|
12
|
|
Was halten Sie von US-Präsident Donald Trump?
|
|
6
|
|
Was halten Sie von US-Präsident Donald Trump?
|
Gar nichts, er wird mit seinen Vorhaben kläglich scheitern
|
6
|
|
Was halten Sie von US-Präsident Donald Trump?
|
Viel, er wird die USA wieder in die Spur bringen
|
6
|
|
Wird Trump seine erste Amtszeit als Präsident überstehen?
|
|
12
|
|
Wird Trump seine erste Amtszeit als Präsident überstehen?
|
Ja, er wird sogar wiedergewählt werden
|
12
|
|
Wird Trump seine erste Amtszeit als Präsident überstehen?
|
Nein, er wird vorher abtreten müssen
|
12
|
pos <- paste("Ja","Viel", sep="|")
neg <- paste("Nein", "Gar nichts", sep="|")
plot_polls(opinary, key, pos, neg)
Brexit
key <- "brexit"
check_polls(opinary, key)
|
header
|
label
|
n
|
|
War der Brexit die richtige Entscheidung der Briten?
|
|
6
|
|
War der Brexit die richtige Entscheidung der Briten?
|
Ja, sie brauchen die EU nicht
|
6
|
|
War der Brexit die richtige Entscheidung der Briten?
|
Nein, sie sind auf die EU angewiesen
|
6
|
|
Wird es noch zu einem Exit vom Brexit kommen?
|
|
11
|
|
Wird es noch zu einem Exit vom Brexit kommen?
|
Ja, der Brexit ist noch nicht in trockenen Tüchern
|
11
|
|
Wird es noch zu einem Exit vom Brexit kommen?
|
Nein, der Austritt ist beschlossene Sache
|
11
|
|
Wird es zum harten Brexit kommen?
|
|
10
|
|
Wird es zum harten Brexit kommen?
|
Ja, die Alternativen sind aufgebraucht
|
1
|
|
Wird es zum harten Brexit kommen?
|
Ja, es wird am Ende keine Einigung bestehen
|
6
|
|
Wird es zum harten Brexit kommen?
|
Ja, es wird keine Einigung geben
|
3
|
|
Wird es zum harten Brexit kommen?
|
Nein, am Ende wird ein Deal stehen
|
6
|
|
Wird es zum harten Brexit kommen?
|
Nein, am Ende wird ein Kompromiss stehen
|
3
|
|
Wird es zum harten Brexit kommen?
|
Nein, es wird noch einen Kompromiss geben
|
1
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, key, pos, neg)
Nato, Türkei, Syrien
keys <- paste("nato","türkei", "tuerkei", "syrien", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Hat die NATO eine Zukunft?
|
|
8
|
|
Hat die NATO eine Zukunft?
|
Ja, das Verteidigungsbündnis ist nach wie vor wichtig
|
8
|
|
Hat die NATO eine Zukunft?
|
Nein, die NATO hat sich überlebt
|
8
|
|
Ist der Rückzug aus Syrien die richtige Entscheidung?
|
|
7
|
|
Ist der Rückzug aus Syrien die richtige Entscheidung?
|
Ja, das wurde langsam Zeit.
|
7
|
|
Ist der Rückzug aus Syrien die richtige Entscheidung?
|
Nein, jetzt droht eine humanitäre Katastrophe.
|
7
|
|
Ist die Türkei unter Erdogan noch ein verlässlicher Partner?
|
|
14
|
|
Ist die Türkei unter Erdogan noch ein verlässlicher Partner?
|
Ja, die Türkei bleibt ein wichtiger Verbündeter
|
14
|
|
Ist die Türkei unter Erdogan noch ein verlässlicher Partner?
|
Nein, mit ihr ist keine stabile Partnerschaft möglich
|
14
|
|
Ist es gut, dass Deutschland Rüstungsexporte in die Türkei gestoppt hat?
|
|
4
|
|
Ist es gut, dass Deutschland Rüstungsexporte in die Türkei gestoppt hat?
|
Ja, es nicht abzusehen, gegen wen die Waffen eingesetzt werden
|
4
|
|
Ist es gut, dass Deutschland Rüstungsexporte in die Türkei gestoppt hat?
|
Nein, die Türkei sollte als NATO-Partner unterstützt werden
|
4
|
|
Würden Sie jetzt noch Urlaub in der Türkei machen?
|
|
9
|
|
Würden Sie jetzt noch Urlaub in der Türkei machen?
|
Ja, die Politik hat darauf keinen Einfluss
|
9
|
|
Würden Sie jetzt noch Urlaub in der Türkei machen?
|
Nein, die Lage ist mir zu heikel
|
9
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)
EU
keys <- paste("notre","asyl", sep ="|")
check_polls(opinary, keys)
|
header
|
label
|
n
|
|
Glauben Sie an eine europäische Lösung im Asyl-Streit?
|
|
9
|
|
Glauben Sie an eine europäische Lösung im Asyl-Streit?
|
Ja, eine andere als eine europäische Lösung kann es gar nicht geben
|
9
|
|
Glauben Sie an eine europäische Lösung im Asyl-Streit?
|
Nein, zuerst müssen sich CDU und CSU einigen
|
9
|
|
Sollte Deutschland sich am Wiederaufbau der Notre-Dame beteiligen?
|
|
6
|
|
Sollte Deutschland sich am Wiederaufbau der Notre-Dame beteiligen?
|
Ja, den Wiederaufbau sollten die Europäer gemeinsam angehen
|
6
|
|
Sollte Deutschland sich am Wiederaufbau der Notre-Dame beteiligen?
|
Nein, die französischen Experten sind dafür am besten geeignet
|
6
|
pos <- "Ja"
neg <- "Nein"
plot_polls(opinary, keys, pos, neg)